
from flask import Flask, url_for
from werkzeug.utils import redirect

app = Flask(__name__)

@app.route("/")
def index():
 return 'hello world'

def login():
    return "this is a login page"

# endpoint 路由别名，view_func 响应函数  app.route()的本质是执行rule
app.add_url_rule("/login/",endpoint='denglu',view_func=login,methods=['GET','POST'])


#带默认格式参数
@app.route('/demo1/<id>/')
def index1(id):
    print(type(id))
    return '%s' % id

#指定参数是int类型
@app.route('/demo2/<int:id>/')
def index2(id):
    print(type(id))
    return '{}'.format(id)

#指定参数是path,区别字符串
@app.route('/demo3/<path:name>/')
def index3(name):
    print(name)
    print(type(name))
    return name

#指定参数是uuid类型 d989b3b4-d266-11ec-b208-3413e8b77491
@app.route('/demo4/<uuid:uuid>/')
def index4(uuid):
    print(uuid)
    print(type(uuid))
    return "我是唯一表示：" + str(uuid)

#路由重定向
@app.route('/demo5')
def index5():
    return redirect("http://www.baidu.com")

#路由重定向2
@app.route('/demo6/<id>/')
def index6(id):
    return redirect(url_for("denglu"))  #通过我们自定义指定别名也可以重定向访问

#路由重定向3,带参数的重定向
@app.route('/demo7/<id>/')
def index7(id):
    url = url_for('index2',id=id)
    print(url)
    #return url
    return redirect(url)


if __name__ == '__main__':
    app.run(port=8000)

